iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
自我挑戰組

JAVA的實作與應用系列 第 22

Day 22 Reversing Array

  • 分享至 

  • xImage
  •  

要將array內的資料交換的方式有很多種,但我認為最直覺的是以下兩種。

第一種:建立一個新的陣列然後將原本陣列裡的資料由後往前抓出來建入,最後將心陣列的資料複製到舊陣列程式碼如下:

Step 1 先建立一個陣列a,裡面依序有1-5的整數,接著建立另一個陣列b,
並給予陣列b的記憶體大小跟a的一樣,用a.length,來表示陣列b的記憶體大小。
https://ithelp.ithome.com.tw/upload/images/20211004/20140456nwEY2uqZdW.png

Step2 進入for迴圈,條件式i 從第零項開始,且i 要小於a陣列的範圍,i++
接著將a陣列裡面的資料從後開始複製到b陣列裡。
https://ithelp.ithome.com.tw/upload/images/20211004/20140456Wk4eLzbSGX.png

Step3 將矩陣b的資料複製回矩陣a。
https://ithelp.ithome.com.tw/upload/images/20211004/20140456PQgEe1tNWI.png

此時矩陣a的資料已經反轉過來變成5, 4, 3, 2, 1
但這種方法所要好富的時間複雜度比較多,因此這裡有另一個方法,
將1, 2, 3, 4, 5反轉成5, 4, 3, 2, 1可以想成1、5對調,2、4對調,這樣程式只需要執行兩個動作,需要花費的時間比上一個方法少了許多,程式實作如下:

Step1建立一個陣列a,裡面依序有1-5的整數。
https://ithelp.ithome.com.tw/upload/images/20211004/20140456BhXdUlNWoU.png

Step2進入for迴圈,條件式i 從第零項開始,且i 要小於a陣列範圍的一半,因為只需要調換兩個數,i++。
https://ithelp.ithome.com.tw/upload/images/20211004/20140456ETNYtcfofE.png

Step3 宣告一著整數j,從陣列a的後面讀取資料。
https://ithelp.ithome.com.tw/upload/images/20211004/20140456bHkKQay8LT.png

Step4 執行swap方法,將1、5對調,2、4對調。
https://ithelp.ithome.com.tw/upload/images/20211004/20140456M39Kgwy3Rc.png

此時陣列裡的資料已經完成對調
程式全碼如下
第一種方法
https://ithelp.ithome.com.tw/upload/images/20211004/20140456Ei0hRICVQp.png

第二種方法
https://ithelp.ithome.com.tw/upload/images/20211004/201404561XwdUXzOZN.png


上一篇
Day 21 Arraylist
下一篇
Day 23 Object oriented programming
系列文
JAVA的實作與應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言